package com.limengrui.service;

import java.time.LocalDateTime;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired; //提供@Autowired注解
import org.springframework.stereotype.Service; //提供@Service注解

import com.limengrui.Model.Users;
import com.limengrui.repository.UsersRepository;

@Service // 表明ArticlesService类为服务层类
public class UsersService {
	// 规则: 服务类要有一个司机类DAO
	private final UsersRepository usersRepository;
	
	//不具备实用功能,它是构造方法,作用就是拿内存
	@Autowired // 构建一个新的服务员对象(张三)时,自动创建一个司机对象(李四)
	public UsersService(UsersRepository usersRepository) {
		this.usersRepository = usersRepository;
	}

	// 定义服务员张三能做的事情，注册一个新用户（需要参数给我）
	//具备实用功能,作用:注册新用户
	public Users createUser(Users user) {
		user.setCreatedAt(LocalDateTime.now());
		user.setUpdatedAt(LocalDateTime.now());
		return usersRepository.save(user);
		// save()来自JpaRepository
		// save()方法如果传入的对象是一个新的实体(既没有主键或主键为null),则会将其插入到数据库中，并返回一个包含生成的主键的新对象
	}
	
	/*
	  	新增一个方法getUserByID(),根据给的用户编号参数，返回一个Optional容器类，增加代码健壮性
	  	1.如果找到该用户，容器里装着这个user对象
	  	2.如果找不到编号的用户，容器里留空
	 */
	public Optional<Users> getUserByID(Long id){
		return usersRepository.findById(id);
	}
	
	/*
	 * 根据用户编号删除用户
	 * @param id 用户编号
	 * @return 如果删除成功，返回true，否则返回false
	 */
	public boolean deleteUserByID(Long id) {
		if (usersRepository.existsById(id)) { //调用父类existById()方法判断该用户是否存在
			usersRepository.deleteById(id);
			return true;
		}else {
			return false;
		}
	}
}
